1. Field of Invention
The present invention relates to the fields of distributed computing systems, client-server computing, and object-oriented programming. More particularly, the invention relates to methods and devices for dispatching a distributed object invocation.
2. Description of Prior Art
A computing environment in which objects located on different computers are linked by a network is typically referred to as a client-server computing environment. Some of the computers act as providers of services or functionality to other computers. Others of the computers act as consumers of services or functionalities. The providers of service or functionality are known as"servers", and the consumers of the service or functionality are called"clients". The client-server model may also be generalized to the case where distinct programs running on the same computer are communicating with one another through some protected mechanism and are acting as providers and consumers of service or functionality.
Attempts to provide such a distributed system have been made using object-oriented methodologies that are based upon a client-server model in which server objects provide interfaces to client objects that make requests of the server objects. Typically, in such a distributed system, the servers are objects consisting of data and associated methods. The client objects obtain access to the functionalities of the server objects by executing calls on them, which calls are mediated by the distributed system. When the server object receives a call, it executes the appropriate method and transmits the result back to the client object. The client object and server object communicate through an Object Request Broker (ORB) which is used to locate the various distributed objects and to establish communications between objects. Distributed objects may exist anywhere in a network, as for example in the address space of the client, in multiple address spaces on the client machine, and in multiple machines across the network.
The software industry has responded to the need for a distributed object technology by forming the Object Management Group (OMG). The goal of the OMG is to define the Object Management Architecture (OMA), which has four major components: the Object Request Broker (ORB), Object Services, Common Facilities, and Application Objects. The Object Request Broker provides basic object communications and management services, thereby forming the basis of a distributed object system. A standard for an Object Request Broker is contained in the Common Object Request Broker Architecture (CORBA) specification.
In typical client-server systems, performance overhead can be costly. That is, the speed and quality of a process within the system may be compromised by inefficient uses of application code and methods associated with gathering information from the process and with routing information within a process. By way of example, the performance overhead associated with dispatching requests on the server side of a system is often relatively high. Further, the internal dispatch framework within a client-server system is typically such that any change to the framework requires substantial changes to be made in application code. That is, by way of example, if it is desired for the relationship between a given transport and a skeleton to be altered, a significant amount of the internal dispatch framework, and, hence, the application code must be changed in most instances. Further, client-server systems typically do not efficiently include and execute application code provided by a developer. In other words, customizing an internal dispatch framework is often inefficient. As a result, there is a limited amount of flexibility in a typical internal dispatch framework. Consequently, the provision of methods and devices which would reduce the performance overhead associated with dispatching requests on the server side of a system and improve the flexibility of the internal dispatch framework is desirable.